package org.example.multiThreading.threadArray;

import java.util.concurrent.ConcurrentHashMap;

public class TestConcurrentHashMap {
    public static void main(String[] args) {
        /*
        ConcurrentHashMap
        初始容量默认为16段（Segment），使用分段锁设计。每一段都对应着一个哈希表。
        不对整个Map加锁，而是为每个Segment加锁。对一个Segment的操作不影响其他Segment。
        当多个对象存入同一个Segment时，才需要互斥。
        最理想状态为16个对象分别存入16个Segment，并行数量16。
        使用方式与HashMap无异。
        */
        //创建集合
        ConcurrentHashMap<String, Integer> hashMap=new ConcurrentHashMap<>();
        //使用多线程添加数据
        for(int i=0;i<5;i++) {
            new Thread(new Runnable() {
                @Override
                public void run() {
                    for(int k=0;k<10;k++) {
                        hashMap.put(Thread.currentThread().getName(), k);
                        System.out.println(hashMap);
                    }
                }
            }).start();
        }
    }
}
